package cn.hxzy.kaoshi.service;

import cn.hxzy.kaoshi.entity.SysSimulatedExam;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 模拟考试 服务类
 * </p>
 *
 * @author tyqw
 * @since 2024-12-13
 */
public interface ISysSimulatedExamService {
    /**
     * 获取随机单选题列表
     * 此方法用于从系统中随机获取一系列单选题，用于模拟考试或测试
     * 返回的列表中包含了Map对象，每个对象代表一个单选题
     *
     * @return 包含随机单选题的列表
     */
    Map<String ,Object> getRandomSingleChoiceQuestions(Map<String,Object> map);

    /**
     * 获取随机多选题列表
     * 此方法用于从系统中随机获取一系列多选题，用于模拟考试或测试
     * 返回的列表中包含了Map对象，每个对象代表一个多选题
     *
     * @return 包含随机多选题的列表
     */
    Map<String ,Object> getRandomMultipleChoiceQuestions(Map<String,Object> map);

    /**
     * 获取随机判断题列表
     * 此方法用于从系统中随机获取一系列判断题，用于模拟考试或测试
     * 返回的列表中包含了Map对象，每个对象代表一个判断题
     *
     * @return 包含随机判断题的列表
     */
    Map<String ,Object> getRandomTrueFalseQuestions(Map<String,Object> map);

    /**
     * 添加模拟考试记录
     *
     * @param sysSimulatedExam 模拟考试对象，包含考试的相关信息
     */
    void add(SysSimulatedExam sysSimulatedExam);

    /**
     * 根据用户ID查找模拟考试记录
     *
     * @param userId 用户ID，用于筛选考试记录
     * @return 匹配的模拟考试记录列表
     */
    List<SysSimulatedExam> findByUserId(Long userId);
    //根据id查询所有模拟成绩
    List<Map> findAllExamResults2(Long userId);
//根据id删除模拟成绩
    Integer deleteById(Long id);
    /**
     * 根据指定的ID查找所有问题
     * 此方法旨在查询与特定ID相关联的所有问题，该ID可以是任何具有意义的标识符，
     * 例如用户ID、测试ID等具体上下文由使用场景决定
     *
     * @param id 特定的标识符，用于查找问题
     * @return 包含问题信息的映射列表每个映射代表一个问题，
     * 其中键是问题属性的名称，值是对应的属性值
     */
     List<Map<String, Object>> findAllQuestions(Integer examId);

    /**
     * 根据ID查找体检信息
     *
     * @param id 体检记录的唯一标识符
     * @return 包含体检信息的映射，其中键是信息的名称，值是对应的信息内容
     */
    Map<String, Object> findexaminationById(Integer id);

    boolean insertSimulatedExam(Map<String, Object> examData);
}
